In recent years, software engineers have focused on building applications on a variety of platforms for example iOS, Android, Windows Phone, BlackBerry, and Firefox OS. These applications often use software development kits (SDKs) that provide users with access to data and functionality such as maps, email, news, and social networking information. A software development kit (SDK) may include a set of software development tools, libraries, documentation, header files, and samples that can be used to develop applications for a certain development platform with specific functionality that is specified in the SDK. SDKs may include application programming interfaces (APIs) so that software developers can have controlled access to methods and data from other applications or services, such as web services.
For example, an SDK provider may create a mapping service and provide a Map API for software developers to access the mapping service's functionality. The Map SDK may include sample code, libraries, and documentation on how the map functionality should be used. The Map API may contain information about the mapping service including methods to obtain: directions to a location, the travel distance between locations, the travel time between locations, and a location's elevation. If a software developer is building an application for a fast food restaurant, the developer may want to use the Map API to allow a user to request directions to the restaurant from the user's current location. The developer does not have to write the map-specific code to obtain directions, but can instead use the Map API to access the mapping web service's functionality and obtain directions.
Customarily, each SDK development team has an entirely independent end-to-end release process from other SDK development teams. These separate release processes may lead to several problems. For example, individual SDKs may be provided in different formats which lead to inconsistent packaging structures and components being available to developers. Developers then have to understand how to handle each particular format. Another problem is minimal, if any compatibility testing among SDKs. Since each SDK development team releases its own SDK, each team only tests its own SDK, without considering other SDKs that may be used on the same development platform. The lack of testing among SDKs may create binary incompatibilities among produced SDKs since SDKs may depend on the same dependency, but use different versions of the dependency. Another problem is that currently there is no way to provide consistent documentation about an SDK including how to use a specific SDK in a development project. Additionally, there is no coordination of external messaging among released SDKs for a particular software platform.
As recognized by the inventors, there should be an automated system that provides an end-to-end release process for SDKs so that SDKs can be released in conjunction with other SDKs.